//Lunghezza massima in caratteri dei campi nelle linee (compreso carattere di fine stringa)
#define MAX_CHAR 257

//Grandezza massima del buffer
#define BUFFER_SIZE 20

//Struttura dati per l'utilizzo del buffer
typedef struct circolare {
	char 			* space[BUFFER_SIZE];		//Vettore di stringhe in cui salvare i messaggi
	int 			readpos;					//Indice per la posizione di lettura
	int 			writepos;					//Indice per la posizione di scrittura
	int 			cont;						//Numero di messaggi presenti all'interno del buffer
	pthread_cond_t	full;						//Coda per i thread se il buffer è pieno
	pthread_cond_t	empty;						//Coda per i thread se il buffer è vuoto
	pthread_mutex_t	mux;						//Semaforo binario per risolvere il problema di mutua esclusione
} circolare;

//Prototipo delle funzioni
int main(int, char**);
void *threadMain(void*);
void *threadDispatcher(void*);
void *threadWorker(void*);
void timestamp(char*);
void disconnesso(int);
void gestoreSegnali(int);
